package main

import (
	"fmt"
)

func main() {
	var x any = "abc"
	fmt.Printf("%T %[1]v\n", x)
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~")

	// if t, ok := x.(int); ok {
	// 	fmt.Printf("断言 x 为 string 类型成功, %T %[1]v\n", t)
	// } else {
	// 	fmt.Printf("断言 x 为 string 类型失败, %T %[1]v 为零值\n", t)
	// }

	switch v := x.(type) {
	case nil:
		fmt.Println("nil")
	case int:
		fmt.Println("int", v)
	case []int:
		fmt.Println("[]int", v)
	case string:
		fmt.Println("string", v, []byte(v))
	default:
		fmt.Println("啥也不是")
	}

}
